package com.cl.unipay4j.core.pay;

import com.cl.unipay4j.core.Result;

import javax.servlet.http.HttpServletRequest;

/**
 * 退款接口类
 *
 * @author siashan
 * @since v1.0.1
 **/
public interface IRefund {

    /**
     * 退款请求
     *
     * @param model  退款请求实体
     * @return 退款结果
     */
    Result<Object> execRefund(RefundModel model);

    /**
     * 退款查询
     * 该接口目前仅支持根据退款单号查询单条退款结果
     *
     * @param model  退款查询请求实体
     * @return 退款查询结果
     */
    Result<Object> execQuery(RefundQueryModel model);

    /**
     * 退款结果通知
     *
     * @param request   request
     * @return 通知结果
     */
    Result<Object> execNotify(HttpServletRequest request);


    /**
     * 回调成功，同步返回给支付平台的报文
     *
     * @return 返回报文
     */
    String successMsg();

    /**
     * 回调失败，同步返回给支付平台的报文
     *
     * @return 返回报文
     */
    String failMsg();
}
